package com.zhangxi.springbootwebzhangxi.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.Map;

/**
 * ClassName: JwtUtils
 * Package: com.zhangxi.springbootwebzhangxi.util
 */

public class JwtUtils {
    private static  String sinnKey  = "zhangxi"; //签名密钥
    private static  Long  expire = 43200000L; //有效时间

    /**
     * 生成JWT令牌
     * @param claims JWT第二部分荷载payload中存储的内容
     * @return
     */
    public  static  String generateJwt(Map<String,Object> claims){
        String jwt = Jwts.builder().addClaims(claims)//自定义信息，有效荷载
                .signWith(SignatureAlgorithm.HS256,sinnKey) //签名算法头部
                .setExpiration(new Date(System.currentTimeMillis() + expire)) //有效时间
                .compact();
        return jwt;
    }

    /**
     * 解析JWT令牌
     * @param jwt jwt令牌
     * @return JWT第二部分荷载payload中存储的内容
     */
    public static Claims parseJwt(String jwt){
        Claims claims = Jwts.parser()
                .setSigningKey(sinnKey)// 指定密钥
                .parseClaimsJws(jwt)//指定令牌Taken
                .getBody();
        return claims;
    }

}
